shell 练习8

需求: 两台web:A和B机器,其中一台B只打算跑附件(大多为图片),另一台A跑除了附件外的其他东西。其中附件会在A上生成,默认附件会通过A机器访问,但当我们更改某个附件的标志位时,那么附件则会跑到B上去访问。 假如提供给我们了将要在B上跑的附件列表和更改这些附件的标志位的一个sql文件,那么我们如何做呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! /bin/bash
## 1. rsync att to remote server.
## 2. execute the sql for changing tag 0 to 1.
## 3. delete the file att_list and sql.
base_dir=/data/wwwroot/bbs.xxx.com/data
r_dir=160.11.274.32::img
d=`date +%Y%m%d`
#文件列表的文件
f_list=$base_dir/attachment_move_list.php
#更改附件标志位的sql文件
f_sql=$base_dir/attachment_move_sql.php 更改附件标志位的sql文件
file_dir=$base_dir/oldatt_list_sql
if [ ! -d $file_dir ] ; then
mkdir $file_dir
fi
if [ ! -f $f_list ] || [ ! -f $f_sql ]; then
exit
fi
grep -v 'exit()' $f_list |sed 's#/data/wwwroot/bbs.xxx.com/data/attachment/forum#.#' > /tmp/1.txt
cd $base_dir/attachment/forum
rsync -aL --files-from=/tmp/1.txt ./ $r_dir/
/bin/mv $f_list $file_dir/$d.list
grep -v 'exit()' $f_sql < /tmp/2.txt
mysql -h192.168.1.11 -uuser -p'passwd' bbs &lt; /tmp/2.txt
/bin/mv $f_sql $file_dir/$d.sql